利用UIApplication单例拿到当前视图控制器

很多时候架构解耦不彻底,我们不得不在View层或Model层处理Controller内的逻辑,调用Controller内的方法,虽然使用delegate或block等回调方式更加清晰明确,但有时却不如直接调用来的方便。

1
[[UIApplication sharedApplication].windows firstObject].rootViewController

这样就能直接拿到当前的rootViewController。比如对它调用presentViewController: animated: completion:就可以马上在当前状态下弹出一个视图控制器。

这样的利用方式在很多单例VC中会用到很多,比如音乐播放器,要长期驻留,这时我们会在一个rootViewController中掌控音乐播放器这个View。